import BaseController from "./base.js";
/**
 * 用户相关后台接口
 */
export default class extends BaseController {
    /**
    * 用户列表 
    * 获取用户列表的数据
    *
    * @returns {Promise} 包含满足条件的新闻列表的Promise对象
    * @example
    *
    * const listInfo = await request.post("/api/admin/users/list",
    * 返回列表每一个对象包含以下属性：
    * {
        "errno": 0,
        "errmsg": "",
        "data": [
            {
                "id": 20,
                "account": "123",
                "password": "123456",
                "user_name": null,
                "contact_information": "123",
                "permission": "1",
                "status": "1",
                "create_time": "2021-06-03 20:59:58"
            }
        ]
    }
    */
    async listAction(){
        //定义变量保存用户列表数据
        let rows = await this.model("users")
            .select();

        if(think.isEmpty(rows)){
            return this.fail(1000,"数据错误");
        }

        return this.success(rows);
    }


    /**
    * 修改用户数据
    * @param {int} id
    * @param {string} account
    * @param {string} password
    * @param {string} user_name
    * @param {string} contact_information
    * @param {string} permission
    * @param {float} status
    *
    * @returns {Promise} 
    * @example
    *
    * const usersUpdateInfo = await request.post("/api/admin/users/update");
    * 返回列表每一个对象包含以下属性：
    * {
        "errno": 0,
        "errmsg": "",
        "data": "修改成功"
      }
    */
   async updateAction(){

        

        if(think.isEmpty(this.post('id'))){
            return this.fail(1000,'参数错误');
        }

        let data = this.post();


        //定义变量保存数据库操作信息
        let info = await this.model("users")
            .where({id : data['id']})
            .update(data);
        
        //判断数据库操作是否成功
        if(!think.isEmpty(info)){
            return this.success('修改成功');
        }else{
            return this.fail(1000,'修改失败');
        }
    }


    /**
    * 删除用户数据
    * @param {int} id 需删除的新房id
    *
    * @returns {Promise} 包含操作提示语句
    * @example
    *
    * const usersDeleteInfo = await request.post("/api/admin/users/delete");
    * 返回列表每一个对象包含以下属性：
    * {
        "errno": 0,
        "errmsg": "",
        "data": "删除成功"
      }
    */
    async deleteAction(){
        //定义变量保存前端传过来的id
        if(think.isEmpty(this.post("id"))){
            return this.fail(1000,'参数错误');
        }
        
        let id = this.post("id");
        
        let info = await this.model("users").where({id : id}).delete();

        if(!think.isEmpty(info)){
            return this.success("删除成功");
        }else{
            return this.fail(1000,'删除错误');
        }
    }
}